每天学习一点R:22.饼图的绘制
今天给大家介绍几个基本的饼图绘制方法,主要涉及的函数就是pie()和pie3D()。
pie函数绘制饼图
pie函数是R自带的一个基础函数,专门用于绘制饼图,还是照例先给出使用参数。
pie(x, labels = names(x), edges = 200, radius = 0.8,
clockwise = FALSE, init.angle = if(clockwise) 90 else 0,
density = NULL, angle = 45, col = NULL, border = NULL,
lty = NULL, main = NULL, ...)
各参数意义:
x,绘制饼图的数据,数据的大小在饼图中用面积反应;
labels,图像中不同扇形的标签,默认为数据的名字,也可自定义;
edges,规定饼图的圆环采用多少个连续的边构成,也就是说可以将饼图变为多边形图;
radius,规定圆的半径;
colckwise,TRUE时饼图为顺时针方向绘制,FALSE时为逆时针方向绘制;
init.angle,规定饼图第一个数值开始绘制时的起始角度;
density,是否绘制阴影线;
angle,阴影线的角度;
col,扇区的颜色;
border,边界的颜色;
lty,边界的线型
main,标题内容。
接下来进入正题,开始图像的绘制,首先随便建立一个绘图的数据,饼图的数据其实很简单,就两列,一列是绘制饼图个扇区的数值,另一个是其对应的名字。
a <- c("A","B","C","D","E","F","G")
b <- c(17,13,8,5,10,2,9)
之后对数据进行一些处理,计算每一个绘图数据所占的比例,并制作响应的标签。
pct <- round(b/sum(b)*100)
lab <- paste(a," ",pct,"%",sep="")
d <- data.frame(a,b,lab)
将绘图数据按照数值进行排序。
d<- d[order(d[,"b"]),]
接下来绘制图像。
library(RColorBrewer)
pie(d[,"b"],labels=NA,clockwise=T,col=brewer.pal(7,"Set1"),
border="white",radius=0.9,cex=0.8,main="Pie chart")
#添加图例
legend("right",legend = lab,bty = "n",inset = c(-0.4,0),
xpd = T,fill = brewer.pal(7,"Set1"))
处理以图例形式展示各扇形形成之外,还有一种方式是在扇形的附近进行文字标注。
pie(d$b,labels=d$lab,col=rainbow(length(d$lab)),
main="Pie Chart with Percentage")
pie3D绘制3D饼图
pie3D是属于plotrix包的一个函数,可以绘制具有3D结构的饼图,其具体参数如下:
pie3D(x,edges=NA,radius=1,height=0.1,
theta=pi/6,start=0,border=par("fg"),
col=NULL,labels=NULL,labelpos=NULL,
labelcol=par("fg"),labelcex=1.5,
sector.order=NULL,explode=0,shade=0.8,
mar=c(4,4,4,4),pty="s",...)
各参数意义:
x,代表饼图各部分比例的数值向量;
edges,形成圆形所需的线的个数,可以用此参数绘制多边形图;
radius,饼图的半径;
height,饼图的高度;
theta,投射图的观察角度;
start,在什么角度开始绘制第一个部分;
border,各部分边界的颜色;
col,各部分的填充颜色;
labels,各部分的标签;
labelpos,各部分标签的位置;
labelcol,标签的颜色;
labelcex,标签的大小;
sector.order,规定各部分的绘制顺序;
explode,饼图各部分的间距;
shade,规定3D图的阴影;
mar,饼图的边界;
pty,规定饼图是否绘制在正方体区域中,s代表正方体,m代表长方体。
还是用刚才的数据进行图形的绘制。
library(plotrix)
pie3D(d$b, labels=d$lab, explode=0.1, height = 0.2,
radius = 0.8, main="3D Pie Chart")
扩展阅读